diff options
| author | Adam Soltys <[email protected]> | 2023-04-04 15:11:42 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-04-04 15:11:42 -0700 |
| commit | bf83d563fdac23da32b547130f0e24b48bf4b743 (patch) | |
| tree | 5012961ce3e010e551749802b070b52fe7f9f8a9 /src/routes/(app)/[username]/(profile) | |
| parent | 048766bccca842523192ba183fbbfebf879746fd (diff) | |
| download | coinos-ui-bf83d563fdac23da32b547130f0e24b48bf4b743.tar.gz coinos-ui-bf83d563fdac23da32b547130f0e24b48bf4b743.zip | |
rate refactoring
Diffstat (limited to 'src/routes/(app)/[username]/(profile)')
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/+layout.svelte | 24 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/+page.svelte | 41 |
2 files changed, 35 insertions, 30 deletions
diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index 006bbf72..3d814668 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -1,13 +1,13 @@ <script> import { f, s, sats } from '$lib/utils'; - import { animatedRate, selectedRate } from '$lib/store'; + import { animatedRate } from '$lib/store'; import { Icon } from '$comp'; import { t } from '$lib/translations'; import { sign, send } from '$lib/nostr'; export let data; - let events, user, subject, src, text; - $: ({ events, user, subject, src, text } = data); + let events, user, subject, rates, src, text; + $: ({ events, user, rates, subject, src, text } = data); $: ({ currency, username: n, display } = subject); $: username = n.length > 60 ? n.substr(0, 6) : display || n; @@ -42,24 +42,6 @@ $: following = !!user?.follows.find((t) => t.includes(subject.pubkey)); - let ease = (t) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t); - let i; - - let o = $selectedRate; - $: animate($selectedRate); - let animate = (n) => { - clearInterval(i); - - let t = 0; - let d = o - n; - - i = setInterval(() => { - $animatedRate = (o - d * ease(t / 100)).toFixed(2); - if (t > 80) (o = n) && clearInterval(i); - t++; - }, 10); - }; - let hideBio = true; let toggleBio = () => (hideBio = false); </script> diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index 09335e9c..1ce09f38 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -2,24 +2,23 @@ import { onMount } from 'svelte'; import { Icon, Avatar, Balance, Feed } from '$comp'; import { t } from '$lib/translations'; - import { f, sat, sats } from '$lib/utils'; + import { ease, f, sat, sats } from '$lib/utils'; import { sign, send, encrypt, decrypt } from '$lib/nostr'; - import { event as e, password } from '$lib/store'; + import { event as e, password, rate, animatedRate } from '$lib/store'; import { browser } from '$app/environment'; export let data; - let { messages, notes, invoices, sent, received, subject, user } = data; + let { messages, notes, invoices, sent, received, subject, user, rates } = data; $: refresh(data); - let refresh = (d) => ({ messages, notes, invoices, sent, received, subject, user } = d); + let refresh = (d) => ({ messages, notes, invoices, sent, received, subject, user, rates } = d); let keys = new Set(); let latest = []; - let i = 0; let ready; e.subscribe(async (event) => { if (!(event && ready)) return; - if (event.recipient.id === user?.id && !~latest.findIndex((m) => m.id === event.id)) { + if (event.recipient?.id === user.id && !~latest.findIndex((m) => m.id === event.id)) { event.content = await decrypt({ event, user }); let i = latest.findIndex((m) => m.pubkey === event.pubkey); @@ -34,22 +33,46 @@ $: initialize($password); let initialize = async (p) => { + let i = 0; ready = false; - if (!p) return; + if (!p || !user) return; while (i < messages.length) { let event = messages[i]; - let k = event.author.id === user.id ? event.recipient.pubkey : event.author.pubkey; + i++; + + if (!(event.author && event.recipient)) continue; + + let k = event.author.id === user.id ? event.recipient?.pubkey : event.author.pubkey; if (!keys.has(k)) { keys.add(k); event.content = await decrypt({ event, user }); if (event.content) latest.push(event); } - i++; } latest = latest; ready = true; }; + + let i; + let o; + + rate.subscribe((n) => { + if (!user?.currency) return; + clearInterval(i); + + let r = ((rates[user.currency] / rates['USD']) * n).toFixed(2); + if (!o) o = r; + + let t = 0; + let d = o - r; + + i = setInterval(() => { + $animatedRate = (o - d * ease(t / 100)).toFixed(2); + if (t > 80) (o = r) && clearInterval(i); + t++; + }, 10); + }); </script> <div class="space-y-8"> |
